#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>

struct S
{
	int n;
	int* arr;
};

int main()
{
	struct S* ps = (struct S*)malloc(sizeof(struct S));
	if (NULL == ps)
	{
		perror("main1");
		return 1;
	}
	ps->n = 10;
	ps->arr = (int*)malloc(10 * sizeof(int));
	if (NULL == ps->arr)
	{
		perror("main2");
		return 1;
	}
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		*(ps->arr + i) = i + 1;
	}
	int* ptr = (int*)realloc(ps->arr, 20 * sizeof(int));
	if (ptr == NULL)
	{
		perror("realloc");
		return 1;
	}
	ps->arr = ptr;
	for(i = 10; i < 20; i++)
	{
		*(ps->arr + i) = i + 1;
	}
	for (i = 0; i < 20; i++)
	{
		printf("%d ", *(ps->arr + i));
	}
	printf("\n");
	free(ps->arr);
	ps->arr = NULL;
	free(ps);
	ps = NULL;
	return 0;
}

//typedef struct st
//{
//	int n;
//	int arr[0];
//}st_type;
//
//int main()
//{
//	st_type* ps = (st_type*)malloc(sizeof(st_type) + 10 * sizeof(int));
//	if (NULL == ps)
//	{
//		perror("malloc");
//		return 1;
//	}
//	ps->n = 10;
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		*(ps->arr + i) = i;
//		printf("%d ", *(ps->arr + i));
//	}
//	printf("\n");
//	free(ps);
//	ps = NULL;
//	return 0;
//}